const getImgName = require('./getImgName')

//  上传图片
module.exports = (params) => {
    return new Promise((resolve, reject) => {
        /**
         * ossUploadPath    oss路径
         * ossBucket        ossBucket名称
         * userPk           用户主键
         * file             文件对象
         */
        let { ossUploadPath, ossBucket, userPk, file } = params

        //	检查上传图片是否存在
        if(!file && !file.buffer){
            return reject('请上传图片')
        } else {
            
            const buffer = file.buffer;

            //	检查上传图片大小
            const size = file.size;

            //	图片大于 10M 大小
            if(size >= 10485760) {
                return reject('请上传小于10M的图片')
            }

            //	获取图片后缀
            const singfileArray = file.originalname.split('.');
            const imgType = singfileArray[singfileArray.length - 1];

            //  检查后缀
            if(imgType !== 'png' && imgType !== 'jpg' && imgType !== 'jpeg'){
                return reject('请上传jpg或png格式图片')
            }

            //	生成图片名称
            const imgName = getImgName({userPk, imgType});
            const ossImgUrl = `${ossUploadPath}/${imgName}`;	//	oss上传 路径

            //	上传到 OSS
            uploadOss();
            
            async function uploadOss(){
                try {
                    const { res } = await ossBucket.put(ossImgUrl, buffer);
                    //	上传成功
                    if(res.status == 200){
                        resolve(imgName);
                    }
                } catch (e) {
                    return reject('上传图片错误')
                }
            }
        }
    })
}